import axios from "axios";
import { ResponseStatus } from "./enums";
import { useAccountStore } from "#imports";
let userStore:any = null
// 创建 Axios 实例
const axiosInstance = axios.create({
    baseURL: 'http://localhost:3001', // 替换为你的 API 基础 URL
    timeout: 150000, // 请求超时时间
    validateStatus: function (status) {
      return status < 500; // 默认值
    },
  });


// 请求拦截器
axiosInstance.interceptors.request.use(
    (config) => {
      // 在发送请求之前做些什么
  
      // console.log("axiosInstance request",config)
      // 例如添加认证令牌
  
      if (!userStore) {
        userStore = useAccountStore()
      }
      userStore.requesting = true;
      
      if (userStore.isLogin && !!userStore.token) {
        config.headers.Authorization = userStore.token;
        // console.log(`config.headers.Authorization = ${userStore.token}`)
      }
      return config;
    },
    (error) => {
      // 处理请求错误
      console.error('请求错误:', error);
      MessageBox.alert(
        error.message,
        '请求错误'
      );
      return Promise.reject(error);
    }
  );
  
  // 响应拦截器
  axiosInstance.interceptors.response.use(
    (response) => {
      // 对响应数据做点什么
      if (!userStore) {
        userStore = useAccountStore()
      }
      userStore.requesting = false;
      //判断response.data.status是否为`error`,如果是,则报错
      // console.log(ResponseStatus.error)
      if (response.data.status === ResponseStatus.error) {
        console.error('发现响应错误:', response.data.message);
        MessageBox.alert(
          response.data.message,
          '请求响应异常！'
        );
        return Promise.reject(response.data);
      }
      return response.data;
    },
    (error) => {
      // 处理默认响应错误
      if (!userStore) {
        userStore = useAccountStore()
      }
      userStore.requesting = false;
      console.error('默认响应错误:', error);
      MessageBox.alert(
        error.message,
        '网络响应异常！'
      );
      return Promise.reject(error);
    }
  );
  

export default axiosInstance;